package cn.iocoder.yudao.module.pay.wallet.dal.mysql;

import cn.iocoder.yudao.framework.business.basic.dao.mapper.CoreMapper;
import cn.iocoder.yudao.framework.business.basic.dao.query.CoreLambdaQueryWrapper;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.pay.wallet.dal.dataobject.PayWalletRechargeDO;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface PayWalletRechargeMapper extends CoreMapper<PayWalletRechargeDO> {

    default int updateByIdAndPaid(Long id, boolean wherePayStatus, PayWalletRechargeDO updateObj) {
        return update(updateObj, new CoreLambdaQueryWrapper<PayWalletRechargeDO>()
                .eq(PayWalletRechargeDO::getId, id).eq(PayWalletRechargeDO::getPayed, wherePayStatus));
    }

    default int updateByIdAndRefunded(Long id, PayWalletRechargeDO updateObj) {
        return update(updateObj, new CoreLambdaQueryWrapper<PayWalletRechargeDO>()
                .eq(PayWalletRechargeDO::getId, id)
                .eq(PayWalletRechargeDO::getRefunded, false));
    }

    default PageResult<PayWalletRechargeDO> selectPage(PageParam pageReqVO, Long walletId, Boolean payStatus) {
        return selectPage(pageReqVO, new CoreLambdaQueryWrapper<PayWalletRechargeDO>()
                .eq(PayWalletRechargeDO::getWalletId, walletId)
                .eq(PayWalletRechargeDO::getPayed, payStatus)
                .orderByDesc(PayWalletRechargeDO::getId));
    }

}